const fs = require("fs")

const util = require("util")
// util.promisify 可以返回一个promise对象
// util.promisify(fs.readFile)("path").then(() => {
// }).catch(() => {
// })

/**
 * 判断输出目录是否存在，不存在则创建
 * @param path
 * @return {Promise<unknown>}
 */
const hasDir = (path) => {
  return new Promise((resolve, reject) => {
    fs.stat(path, (err, msg) => {
      if (err) {
        reject(`目录${path}不存在，系统开始自动创建目录...`)
      } else {
        resolve()
      }
    })
  })
}

/**
 * 创建目录
 * @param path
 * @return {Promise<unknown>}
 */
const createDir = (path) => {
  return new Promise((resolve, reject) => {
    const err = fs.mkdirSync(path, {})
    if (err) {
      reject(`创建目录${path}失败...`)
    } else {
      resolve(`系统创建目录${path}成功...`)
    }
  })
}

/**
 * 文件是否存在
 * @returns {Promise<unknown>}
 */
const hasFile = () => {
  return new Promise((resolve, reject) => {
    //检测文件是否存在
    fs.stat("./test/test.js", (err, msg) => {
      if (err) {
        reject("文件不存在")
      } else {
        resolve("文件存在")
      }
    })
  })
}

/**
 * 删除文件
 * @returns {Promise<unknown>}
 */
const delFile = () => {
  return new Promise((resolve, reject) => {
    fs.unlink("./test/test.js", (err, data) => {
      if (err) {
        reject("删除失败")
      } else {
        resolve("删除成功")
      }
    })
  })
}

/**
 * 读取文件
 * @param path
 * @returns {Promise<unknown>}
 */
const readFile = (path) => {
  return new Promise((resolve, reject) => {
    fs.readFile(path, (err, data) => {
      if (err) {
        reject(err)
      } else {
        resolve()
      }
    })
  })
}

// 第一个then是检测文件的结果处理
// 第二个then是第一个then中返回的删除文件的结构处理
hasFile().then(msg => {
  console.log(`文件存在处理:${msg}`)
  return delFile()
}).then(msg => {
  console.log(`文件删除成功处理:${msg}`)
}).catch(err => {
  console.log(`错误处理:${err}`)
})